package com.chenyuxin.ilp.security.auth.password;

import com.chenyuxin.ilp.model.vo.user.UserLoginVo;
import lombok.Setter;
import org.springframework.security.authentication.AbstractAuthenticationToken;

import java.util.Map;


@Setter
public class PasswordAuthentication extends AbstractAuthenticationToken {
    private String username; // 前端传过来
    private String password; // 前端传过来
    private Map<String, Object> extraParams;
    private UserLoginVo currentUser; // 认证成功后，后台用于生成jwt令牌的数据

    public PasswordAuthentication() {
        // 权限，用不上，直接null
        super(null);
    }

    @Override
    public Object getCredentials() {
        // 根据SpringSecurity的设计，授权成后，Credential（比如，登录密码）信息需要被清空
        return isAuthenticated()?null:password;
    }

    @Override
    public Object getPrincipal() {
        // 根据SpringSecurity的设计，授权成功之前，getPrincipal返回的客户端传过来的数据。授权成功后，返回当前登陆用户的信息
        return isAuthenticated()?currentUser:username;
    }
    public Object getExtraParam(String key) {
        return extraParams != null ? extraParams.get(key) : null;
    }
}
